package java_thinking.unit_15._15_3;

/**
 * @Description :  生成Fibonacci
 *                  这个例子引出java泛型的一个局限性：基本类型无法作为类型参数
 *                  不过，javaSE5具备了自动打包和自动拆包的功能，可以很方便的在
 *                  基本类型和其相应的包装器类型之间的转换。
 * @author: cww
 * @DateTime: 2019-04-01 23:20
 */

public class Fibonacci implements Generator<Integer> {
    private int count = 0;
    @Override
    public Integer next() {
        return fib(count++);
    }
    private int fib(int n) {
        if (n<2){
            return 1;
        }else {
            return fib(n-2) +fib(n-1);
        }
    }

    public static void main(String[] args) {
        Fibonacci fibonacci = new Fibonacci();
        for (int i = 0; i < 18; i++) {
            System.out.print(fibonacci.next()+" ");
        }
    }
}
